﻿using System;
using System.Collections.Generic;
using System.Text;

namespace GameThing.System
{
    // based on 65CE02

    sealed public class CPU
    {
        enum MemoryType
        {
            Mem8,
            Mem16,
            RegA,
            RegP,
            RegPC,
            RegS,
            RegX,
            RegY,
            RegZ,
            Stack,
            Val00,
            ValFF,
        }

        enum OpcodeType
        {
            ADC,
            AND,
            ASL,
            ASR,
            ASW,
            BBR,
            BBS,
            BCC,
            BCS,
            BEQ,
            BIT,
            BMI,
            BNE,
            BPL,
            BRA,
            BRK,
            BSR,
            BVC,
            BVS,
            CLC,
            CLD,
            CLE,
            CLI,
            CLV,
            CMP,
            CPX,
            CPY,
            CPZ,
            DEC,
            DEW,
            DEX,
            DEY,
            DEZ,
            EOR,
            INC,
            INW,
            INX,
            INY,
            INZ,
            JSR,
            JMP,
            LDA,
            LDX,
            LDY,
            LDZ,
            LSR,
            MAP,
            NEG,
            NOP,
            ORA,
            PHA,
            PHP,
            PHW,
            PHX,
            PHY,
            PHZ,
            PLA,
            PLP,
            PLX,
            PLY,
            PLZ,
            RMB,
            ROL,
            ROR,
            ROW,
            RTI,
            RTS,
            SBC,
            SEC,
            SED,
            SEE,
            SEI,
            SMB,
            STA,
            STX,
            STY,
            STZ,
            TAB,
            TAX,
            TAY,
            TAZ,
            TBA,
            TRB,
            TSB,
            TSX,
            TSY,
            TXA,
            TXS,
            TYA,
            TYS,
            TZA,
        }

        enum OperandType
        {
            None,
            ABS16,
            ABX16,
            ABY16,
            IAX16,
            IMM8,
            IMM16,
            IND16,
            ISY8,
            IZX8,
            IZY8,
            IZZ8,
            REL8,
            REL16,
            ZP8,
            ZPX8,
            ZPY8,
        }

        public CPU()
        {
        }

        void AND_ABS_1()
        {
        }

        void AND_ABS_2()
        {
        }

        void AND_ABS_3()
        {
        }

        void AND_ABS_4()
        {
        }

        void AND_ABX_1()
        {
        }

        void AND_ABX_2()
        {
        }

        void AND_ABX_3()
        {
        }

        void AND_ABX_4()
        {
        }

        void AND_ABX_5()
        {
        }

        void AND_ABY_1()
        {
        }

        void AND_ABY_2()
        {
        }

        void AND_ABY_3()
        {
        }

        void AND_ABY_4()
        {
        }

        void AND_ABY_5()
        {
        }

        void AND_IMM_1()
        {
        }

        void AND_IMM_2()
        {
        }

        void AND_IZX_1()
        {
        }

        void AND_IZX_2()
        {
        }

        void AND_IZX_3()
        {
        }

        void AND_IZX_4()
        {
        }

        void AND_IZX_5()
        {
        }

        void AND_IZX_6()
        {
        }

        void AND_IZY_1()
        {
        }

        void AND_IZY_2()
        {
        }

        void AND_IZY_3()
        {
        }

        void AND_IZY_4()
        {
        }

        void AND_IZY_5()
        {
        }

        void AND_IZY_6()
        {
        }

        void AND_IZZ_1()
        {
        }

        void AND_IZZ_2()
        {
        }

        void AND_IZZ_3()
        {
        }

        void AND_IZZ_4()
        {
        }

        void AND_IZZ_5()
        {
        }

        void AND_ZP_1()
        {
        }

        void AND_ZP_2()
        {
        }

        void AND_ZP_3()
        {
        }

        void AND_ZPX_1()
        {
        }

        void AND_ZPX_2()
        {
        }

        void AND_ZPX_3()
        {
        }

        void AND_ZPX_4()
        {
        }

        void ASL_1()
        {
        }

        void ASL_2()
        {
        }

        void ASL_ABS_1()
        {
        }

        void ASL_ABS_2()
        {
        }

        void ASL_ABS_3()
        {
        }

        void ASL_ABS_4()
        {
        }

        void ASL_ABS_5()
        {
        }

        void ASL_ABS_6()
        {
        }

        void ASL_ABX_1()
        {
        }

        void ASL_ABX_2()
        {
        }

        void ASL_ABX_3()
        {
        }

        void ASL_ABX_4()
        {
        }

        void ASL_ABX_5()
        {
        }

        void ASL_ABX_6()
        {
        }

        void ASL_ABX_7()
        {
        }

        void ASL_ZP_1()
        {
        }

        void ASL_ZP_2()
        {
        }

        void ASL_ZP_3()
        {
        }

        void ASL_ZP_4()
        {
        }

        void ASL_ZP_5()
        {
        }

        void ASL_ZPX_1()
        {
        }

        void ASL_ZPX_2()
        {
        }

        void ASL_ZPX_3()
        {
        }

        void ASL_ZPX_4()
        {
        }

        void ASL_ZPX_5()
        {
        }

        void ASL_ZPX_6()
        {
        }

        void ASR_1()
        {
        }

        void ASR_2()
        {
        }

        void ASR_ZP_1()
        {
        }

        void ASR_ZP_2()
        {
        }

        void ASR_ZP_3()
        {
        }

        void ASR_ZP_4()
        {
        }

        void ASR_ZP_5()
        {
        }

        void BBRx_REL_1()
        {
        }

        void BBRx_REL_2()
        {
        }

        void BBSx_REL_1()
        {
        }

        void BBSx_REL_2()
        {
        }

        void BIT_ABS_1()
        {
        }

        void BIT_ABS_2()
        {
        }

        void BIT_ABS_3()
        {
        }

        void BIT_ABS_4()
        {
        }

        void BIT_ABX_1()
        {
        }

        void BIT_ABX_2()
        {
        }

        void BIT_ABX_3()
        {
        }

        void BIT_ABX_4()
        {
        }

        void BIT_ABX_5()
        {
        }

        void BIT_ZP_1()
        {
        }

        void BIT_ZP_2()
        {
        }

        void BIT_ZP_3()
        {
        }

        void BIT_ZPX_1()
        {
        }

        void BIT_ZPX_2()
        {
        }

        void BIT_ZPX_3()
        {
        }

        void BIT_ZPX_4()
        {
        }

        void BMI_REL_1()
        {
        }

        void BMI_REL_2()
        {
        }

        void BMI_RELL_1()
        {
        }

        void BMI_RELL_2()
        {
        }

        void BMI_RELL_3()
        {
        }

        void BPL_REL_1()
        {
        }

        void BPL_REL_2()
        {
        }

        void BPL_RELL_1()
        {
        }

        void BPL_RELL_2()
        {
        }

        void BPL_RELL_3()
        {
        }

        void BranchTaken()
        {
        }

        void BranchTakenPageCrossed()
        {
        }

        void BRK_1()
        {
        }

        void BRK_2()
        {
        }

        void BRK_3()
        {
        }

        void BRK_4()
        {
        }

        void BRK_5()
        {
        }

        void BRK_6()
        {
        }

        void BRK_7()
        {
        }

        void BVC_REL_1()
        {
        }

        void BVC_REL_2()
        {
        }

        void CLC_1()
        {
        }

        void CLC_2()
        {
        }

        void CLE_1()
        {
        }

        void CLE_2()
        {
        }

        void DEC_1()
        {
        }

        void DEC_2()
        {
        }

        void DEZ_1()
        {
        }

        void DEZ_2()
        {
        }

        void EOR_ABS_1()
        {
        }

        void EOR_ABS_2()
        {
        }

        void EOR_ABS_3()
        {
        }

        void EOR_ABS_4()
        {
        }

        void EOR_IMM_1()
        {
        }

        void EOR_IMM_2()
        {
        }

        void EOR_IZX_1()
        {
        }

        void EOR_IZX_2()
        {
        }

        void EOR_IZX_3()
        {
        }

        void EOR_IZX_4()
        {
        }

        void EOR_IZX_5()
        {
        }

        void EOR_IZX_6()
        {
        }

        void EOR_IZY_1()
        {
        }

        void EOR_IZY_2()
        {
        }

        void EOR_IZY_3()
        {
        }

        void EOR_IZY_4()
        {
        }

        void EOR_IZY_5()
        {
        }

        void EOR_IZY_6()
        {
        }

        void EOR_ZP_1()
        {
        }

        void EOR_ZP_2()
        {
        }

        void EOR_ZP_3()
        {
        }

        void INC_1()
        {
        }

        void INC_2()
        {
        }

        void INZ_1()
        {
        }

        void INZ_2()
        {
        }

        void JMP_ABS_1()
        {
        }

        void JMP_ABS_2()
        {
        }

        void JMP_ABS_3()
        {
        }

        void JSR_ABS_1()
        {
        }

        void JSR_ABS_2()
        {
        }

        void JSR_ABS_3()
        {
        }

        void JSR_ABS_4()
        {
        }

        void JSR_ABS_5()
        {
        }

        void JSR_ABS_6()
        {
        }

        void JSR_IAB_1()
        {
        }

        void JSR_IAB_2()
        {
        }

        void JSR_IAB_3()
        {
        }

        void JSR_IAB_4()
        {
        }

        void JSR_IAB_5()
        {
        }

        void JSR_IAB_6()
        {
        }

        void JSR_IAX_1()
        {
        }

        void JSR_IAX_2()
        {
        }

        void JSR_IAX_3()
        {
        }

        void JSR_IAX_4()
        {
        }

        void JSR_IAX_5()
        {
        }

        void JSR_IAX_6()
        {
        }

        void LSR_1()
        {
        }

        void LSR_2()
        {
        }

        void LSR_ABS_1()
        {
        }

        void LSR_ABS_2()
        {
        }

        void LSR_ABS_3()
        {
        }

        void LSR_ABS_4()
        {
        }

        void LSR_ABS_5()
        {
        }

        void LSR_ABS_6()
        {
        }

        void LSR_ZP_1()
        {
        }

        void LSR_ZP_2()
        {
        }

        void LSR_ZP_3()
        {
        }

        void LSR_ZP_4()
        {
        }

        void LSR_ZP_5()
        {
        }

        void NEG_1()
        {
        }

        void NEG_2()
        {
        }

        void ORA_ABS_1()
        {
        }

        void ORA_ABS_2()
        {
        }

        void ORA_ABS_3()
        {
        }

        void ORA_ABS_4()
        {
        }

        void ORA_ABX_1()
        {
        }

        void ORA_ABX_2()
        {
        }

        void ORA_ABX_3()
        {
        }

        void ORA_ABX_4()
        {
        }

        void ORA_ABX_5()
        {
        }

        void ORA_ABY_1()
        {
        }

        void ORA_ABY_2()
        {
        }

        void ORA_ABY_3()
        {
        }

        void ORA_ABY_4()
        {
        }

        void ORA_ABY_5()
        {
        }

        void ORA_IMM_1()
        {
        }

        void ORA_IMM_2()
        {
        }

        void ORA_IZX_1()
        {
        }

        void ORA_IZX_2()
        {
        }

        void ORA_IZX_3()
        {
        }

        void ORA_IZX_4()
        {
        }

        void ORA_IZX_5()
        {
        }

        void ORA_IZX_6()
        {
        }

        void ORA_IZY_1()
        {
        }

        void ORA_IZY_2()
        {
        }

        void ORA_IZY_3()
        {
        }

        void ORA_IZY_4()
        {
        }

        void ORA_IZY_5()
        {
        }

        void ORA_IZY_6()
        {
        }

        void ORA_IZZ_1()
        {
        }

        void ORA_IZZ_2()
        {
        }

        void ORA_IZZ_3()
        {
        }

        void ORA_IZZ_4()
        {
        }

        void ORA_IZZ_5()
        {
        }

        void ORA_ZP_1()
        {
        }

        void ORA_ZP_2()
        {
        }

        void ORA_ZP_3()
        {
        }

        void ORA_ZPX_1()
        {
        }

        void ORA_ZPX_2()
        {
        }

        void ORA_ZPX_3()
        {
        }

        void ORA_ZPX_4()
        {
        }

        void PHA_1()
        {
        }

        void PHA_2()
        {
        }

        void PHA_3()
        {
        }

        void PHP_1()
        {
        }

        void PHP_2()
        {
        }

        void PHP_3()
        {
        }

        void PLP_1()
        {
        }

        void PLP_2()
        {
        }

        void PLP_3()
        {
        }

        void PLP_4()
        {
        }

        void RMBx_ZP_1()
        {
        }

        void RMBx_ZP_2()
        {
        }

        void RMBx_ZP_3()
        {
        }

        void RMBx_ZP_4()
        {
        }

        void RMBx_ZP_5()
        {
        }

        void ROL_1()
        {
        }

        void ROL_2()
        {
        }

        void ROL_ABS_1()
        {
        }

        void ROL_ABS_2()
        {
        }

        void ROL_ABS_3()
        {
        }

        void ROL_ABS_4()
        {
        }

        void ROL_ABS_5()
        {
        }

        void ROL_ABS_6()
        {
        }

        void ROL_ABX_1()
        {
        }

        void ROL_ABX_2()
        {
        }

        void ROL_ABX_3()
        {
        }

        void ROL_ABX_4()
        {
        }

        void ROL_ABX_5()
        {
        }

        void ROL_ABX_6()
        {
        }

        void ROL_ABX_7()
        {
        }

        void ROL_ZP_1()
        {
        }

        void ROL_ZP_2()
        {
        }

        void ROL_ZP_3()
        {
        }

        void ROL_ZP_4()
        {
        }

        void ROL_ZP_5()
        {
        }

        void ROL_ZPX_1()
        {
        }

        void ROL_ZPX_2()
        {
        }

        void ROL_ZPX_3()
        {
        }

        void ROL_ZPX_4()
        {
        }

        void ROL_ZPX_5()
        {
        }

        void ROL_ZPX_6()
        {
        }

        void RTI_1()
        {
        }

        void RTI_2()
        {
        }

        void RTI_3()
        {
        }

        void RTI_4()
        {
        }

        void RTI_5()
        {
        }

        void RTI_6()
        {
        }

        void SEC_1()
        {
        }

        void SEC_2()
        {
        }

        void SEE_1()
        {
        }

        void SEE_2()
        {
        }

        void SMBx_ZP_1()
        {
        }

        void SMBx_ZP_2()
        {
        }

        void SMBx_ZP_3()
        {
        }

        void SMBx_ZP_4()
        {
        }

        void SMBx_ZP_5()
        {
        }

        void TAZ_1()
        {
        }

        void TAZ_2()
        {
        }

        void TRB_ABS_1()
        {
        }

        void TRB_ABS_2()
        {
        }

        void TRB_ABS_3()
        {
        }

        void TRB_ABS_4()
        {
        }

        void TRB_ABS_5()
        {
        }

        void TRB_ABS_6()
        {
        }

        void TRB_ZP_1()
        {
        }

        void TRB_ZP_2()
        {
        }

        void TRB_ZP_3()
        {
        }

        void TRB_ZP_4()
        {
        }

        void TRB_ZP_5()
        {
        }

        void TSB_ABS_1()
        {
        }

        void TSB_ABS_2()
        {
        }

        void TSB_ABS_3()
        {
        }

        void TSB_ABS_4()
        {
        }

        void TSB_ABS_5()
        {
        }

        void TSB_ABS_6()
        {
        }

        void TSB_ZP_1()
        {
        }

        void TSB_ZP_2()
        {
        }

        void TSB_ZP_3()
        {
        }

        void TSB_ZP_4()
        {
        }

        void TSB_ZP_5()
        {
        }

        void TSY_1()
        {
        }

        void TSY_2()
        {
        }

        void TYS_1()
        {
        }

        void TYS_2()
        {
        }
    }
}
